// 成员相关API
const request = require('./request')

// 搜索成员
export function searchMembers({ name, clanId, limit = 20 }) {
  return request.get('/api/member/search', { name, clanId, limit })
}

// 添加子女（审核）
export function addChild(data) {
  return request.post({
    url: '/api/member/add-child',
    data
  })
}

// 添加配偶（审核）
export function addSpouse(data) {
  return request.post({
    url: '/api/member/add-spouse',
    data
  })
}

/**
 * 获取成员详情
 * @param {Number} id - 成员ID
 * @returns {Promise} - 返回Promise对象
 */
function getMemberDetail(id) {
  return request({
    url: `/api/v1/member/${id}`,
    method: 'GET'
  });
}

/**
 * 获取成员列表
 * @param {Object} params - 参数对象
 * @param {Number} [params.clanId] - 宗族ID
 * @param {Number} [params.branchId] - 分支ID
 * @param {Number} [params.page=1] - 页码
 * @param {Number} [params.size=10] - 每页数量
 * @returns {Promise} - 返回Promise对象
 */
function getMemberList(params = {}) {
  return request({
    url: '/api/v1/member/list',
    method: 'GET',
    data: params
  });
}

/**
 * 提交成员审核（新增或修改）
 * @param {Object} data - 成员数据
 * @returns {Promise} - 返回Promise对象
 */
function submitMemberAudit(data) {
  return request({
    url: '/api/v1/audit/member/submit',
    method: 'POST',
    data
  });
}

/**
 * 获取我的审核记录列表
 * @param {Object} params - 参数对象
 * @param {String} [params.status] - 状态：PENDING-待审核，APPROVED-已通过，REJECTED-已拒绝
 * @param {Number} [params.page=1] - 页码
 * @param {Number} [params.size=10] - 每页数量
 * @returns {Promise} - 返回Promise对象
 */
function getMyAuditList(params = {}) {
  return request({
    url: '/api/v1/audit/member/my',
    method: 'GET',
    data: params
  });
}

/**
 * 获取审核详情
 * @param {Number} id - 审核ID
 * @returns {Promise} - 返回Promise对象
 */
function getAuditDetail(id) {
  return request({
    url: `/api/v1/audit/member/${id}`,
    method: 'GET'
  });
}

/**
 * 取消审核
 * @param {Number} id - 审核ID
 * @returns {Promise} - 返回Promise对象
 */
function cancelAudit(id) {
  return request({
    url: `/api/v1/audit/member/cancel/${id}`,
    method: 'POST'
  });
}

module.exports = {
  getMemberDetail,
  getMemberList,
  searchMembers,
  submitMemberAudit,
  getMyAuditList,
  getAuditDetail,
  cancelAudit
}; 